Modern data processing systems transfer data and other signals at very high speeds. When data is transferred over interfaces at high rates of speed, it is a common technique to use a strobe that is transferred with the data to capture that data at the receiver. Because the strobe is launched with the data, the delay that is imposed upon the strobe when traveling across the interface approximates that experienced by the data. This allows the strobe to remain synchronized with the data so that an edge of the strobe may be used by the receiver to capture the data.
The above-described mechanism is premised on the ability to provide a strobe that has well-defined edges and does not contain “glitches”. As is known in the art, a glitch is an unintended signal pulse shorter than a specified minimum that may be caused by noise or other electrical phenomenon. For instance, a strobe being transferred across a bus may experience a glitch because of signal reflections on imperfectly terminated printed-circuit board (PCB) interfaces.
When a glitch occurs on a strobe, the results may be catastrophic, particularly when that strobe is being used to capture data. If the glitch causes data corruption to occur, recovery actions will likely be necessary. The ability to continue operation will depend on the extent of the corruption, and the error correction mechanisms in use within the system, which may include parity or other error-correction code schemes. In a worst-case scenario in which the data cannot be recovered and a backup copy does not exist, a system stop may be required. Thus, what is needed is a glitch detection mechanism that will allow for a complete recovery to avoid system stops, while at the same time reporting the existence of glitches so that remedial actions may be taken at some convenient time in the future.